import request from "@/utils/request";
import {RoleFormType, RoleVo} from "@/api/sys/admin/role/types";
import {PATH_SYS_ADMIN} from "@/utils/constant";

const baseUrl = PATH_SYS_ADMIN + '/role/'

/**
 * 查询角色 -不带分页
 */
export function getRolesApi(): Promise<RoleVo[]> {
    return request.get(baseUrl + 'list')
}

/**
 * 查询角色列表 - 带分页
 * @param data
 */
export function getRoleListApi(data: PageQuery<RoleVo>): PromisePageListType<RoleVo> {
    return request.post(baseUrl + 'list', data)
}

/**
 * 通过角色id获取角色信息
 * @param id
 */
export function getRoleByIdApi(id: number): Promise<RoleFormType> {
    return request.get(baseUrl + id)
}

/**
 * 获取roleIds通过userId
 * @param userId
 */
export function getRoleIdsByUserIdApi(userId: number): Promise<number[]> {
    return request.get(baseUrl + 'ids/' + userId)
}

/**
 * 修改角色
 * @param id
 * @param data
 */
export function editRoleApi(id: number, data: RoleFormType): Promise<any> {
    return request.patch(baseUrl + id, data)

}

/**
 * 添加角色
 * @param data
 */
export function addRoleApi(data: RoleFormType): Promise<any> {
    return request.post(baseUrl, data)
}

/**
 * 删除角色
 * @param id
 */
export function deleteRoleApi(id: number): Promise<any> {
    return request.delete(baseUrl + id)
}

/**
 * 通过角色id获取角色拥有的菜单ids
 * 用于角色拥有的菜单回选,但是由于el-tree的特性,需要过过滤掉父节点
 * @param id
 */
export function getRoleMenuTreeIdsApi(id: number): Promise<number[]> {
    return request.get(baseUrl + 'menu-ids/' + id)
}

/**
 * 提交编辑角色的菜单表
 * @param roleId
 * @param menuIds
 */
export function editRoleMenuTreeApi(roleId: number, menuIds: number[]): Promise<any> {
    return request.post(baseUrl + 'menu-select/' + roleId, menuIds)
}